<?php
/**
 * ページネーションViewヘルパ
 * 
 * @author tanaka
 * @package View_Helper_Url
 * @subpackage Pagination
 */
class View_Helper_Url_Pagination
{
	/**
	 * ページナンバーのデフォルトキー名
	 *
	 * @var string
	 */
	protected static $_defaultPageKey = 'page';

	/**
	 * ページナンバーのデフォルトキー名をセットします
	 *
	 * @param string $pageKey
	 * @return void
	 */
	public static function setDefaultPageNumberKey($pageKey = 'page')
	{
		self::$_defaultPageKey = $pageKey;
	}

	/**
	 * ページナンバーのデフォルトキー名を取得します。
	 *
	 * @return string
	 */
	public static function getDefaultPageNumberKey()
	{
		return self::$_defaultPageKey;
	}

	/**
	 * ページネーションを作成します。
	 *
	 * @param stdClass $pages
	 * @param string optional $pageParamKey
	 * @return void
	 */
	public function __construct(stdClass $pages, $pageKey = null)
	{
		if (is_null($pageKey)) {
			$this->_pageKey = $pageKey;
		}

		$this->_pages = $pages;
	}

	/**
	 * ページナンバーのパラメータ名
	 *
	 * @var string
	 */
	protected $_pageKey = null;

	/**
	 * ページ
	 * @var stdClass
	 */
	protected $_pages;

	/**
	 * $pagesの値を返します。
	 *
	 * @param string $value
	 * @return string|null
	 */
	public function __get($value)
	{
		return isset($this->_pages->$value) ? $this->_pages->$value : null;
	}

	/**
	 * ページナンバーのパラメータ名をセットします
	 *
	 * @param string $param
	 * @return View_Helper_Url_Pagination
	 */
	public function setPageNumberKey($pageKey)
	{
		$this->_pageKey = $pageKey;
		return $this;
	}

	/**
	 * ページナンバーのパラメータ名を取得します。
	 *
	 * @return string
	 */
	public function getPageNumberKey()
	{
		return !is_null($this->_pageKey) ? $this->_pageKey : self::$_defaultPageKey;
	}
	
	

	/**
	 * ページ番号を付与し、URLを返します。
	 *
	 * @param int $pageNumber
	 * @return string
	 */
	public function getUrl($pageNumber)
	{
		return View_Helper_Url_Base::getInstance()->getUrl($this->getPageNumberKey(), $pageNumber);
	}
	
	/**
	 * ページ番号を付与し、クエリストリングを返します。
	 * 
	 * @param int $pageNumber
	 * @return
	 */
	public function getQuery($pageNumber)
	{
		return View_Helper_Url_Base::getInstance()->getQuery($this->getPageNumberKey(), $pageNumber);
	}

}
